<?php

require_once "./RegisterView.php";
require_once "./RegisterHandler.php";
require_once "./Database.php";
require_once "./Validation.php";

class RegisterController {
	
	private $statusMessage = "";
	
	//Kallar på instanser för Handler/View
	public function RegDoControll(Database $db) {
			$rh = new RegisterHandler($db);
			$rw = new RegisterView();
			$val = new Validator();
			
			$html = "";
			
			//Om användaren försöker registrera
			if($rw -> TriedToRegister()){
				//Kollar om användare existerar
				if($db->IfExists($rw->GetUsername()))
				{
					$this->statusMessage .= $rw->statusMessage(RegisterView::EXISTS);
				}
				//Testar om validering av user/pass
				else if(!$val->validateUsername($rw->GetUserName()) && !$val->validatePassword($rw->GetPassword()))
				{
					$this->statusMessage .= $rw->statusMessage(RegisterView::VALIDATIONFAIL);
					
				}
				//Annars registreras användaren
				else
				{
					$this->statusMessage .= $rw->statusMessage(RegisterView::REGISTRED);
					$rh -> DoRegister($rw->GetUserName(), $rw->GetPassword());
				}
			}
			//Om man försöker ta bort
			if($rw -> TriedToDelete()){
				//Tar bort via användarnamnet
				if(!$val->validateUsername($rw->d_GetUsername()) && !$val->validatePassword($rw->d_GetPassword())){
					$this->statusMessage .= $rw->statusMessage(RegisterView::VALIDATIONFAIL);
				}
				else if(!$db->IfExists($rw->d_GetUsername()))
				{
					$this->statusMessage .= $rw->statusMessage(RegisterView::DOESNOTEXIST);
				}
				else
				{
					$rh -> DoDelete($rw->d_GetUserName());
					$this->statusMessage .= $rw->statusMessage(RegisterView::DELETE);
				}
			}	
		
	//Trycker in registerform och delete-knapp i htmlen
	$html .= $rw -> DoRegisterBox();
	$html .= $rw -> DoDeleteBox();
	$html .= $rh -> DoCheckMembers($username, $password);
		
	return $html . $this->statusMessage;
	}
}

?>
